#ifndef JUGADOR_H
#define JUGADOR_H

#include <iostream>
#include <sstream>
#include <string.h>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <vector>
#include <stdio.h>
#include <map>
#include <pthread.h>
#include <time.h>
#include "../parser/parser.h"
#include "datos.h"
#include "../sockets/udpclient.h"
#include "../punto/punto.h"
#include "../threads/ThreadEnviar.h"
#include "../threads/ThreadRecibir.h" /*Hay que incluir un Thread distinto para cada thread
*El thread se programa en la funcion run por lo que tendremos más de un Thread.h */

class Jugador
{
    int numero;
public:
    int i; //CONTROL
    double inicial; //INICIALIZAR SEE.balls
    Jugador();
    Jugador(int argc, char *argv[]);
    Punto posicion;
    UDPclient cliente;
    ThreadEnviar enviar;
    ThreadRecibir recibir;
    Parser parser;
    Datos datos; //Aquí almacenamos nuestros datos


    bool thread_flag;
    pthread_mutex_t _mutex;

    Jugador* jugador; /** Necesario para el thread */
    stringstream msg; /** Almacenamos el mensaje que vayamos a enviar desde el thread,
                        * es de tipo stringstream, el cual nos permite introducir comodamente
                        * los valores a enviar, para utilizar esta variable como string basta
                        * con llamar a "msg.str()"
                        */
    int getnumero();
    void setnumero(int Nnumero);
    void mover(int pot);
    void girar(double ang); //La cambiamos porque solo se puede hacer una cosa por ciclo
    void golpear(int pot,double dir);
    void mirar (double ang);
    void interpretar(string h);
    void seguirPelota();
    void colocar(double x, double y);

};






#endif //JUGADOR_H
